#include<sys/types.h>
#include<unistd.h>
#include<signal.h>
#include<stdio.h>
#include<stdlib.h>

int main(void)
{
	sigset_t set,pendset;
	struct sigaction action;

	// 清空信号集
	sigemptyset(&set);      

	// 加入SIGTERM呢个信号
	sigaddset(&set,SIGTERM);  
	
	// 设为阻塞
	sigprocmask(SIG_BLOCK,&set,NULL);     

	// 因为阻塞所以就算用kill发送信号都无反应
	kill(getpid(),SIGTERM); 

	// 查下有什么阻塞信号,装入&pendset里面
	sigpending(&pendset);  

	// 看下面有什么信号在里面
	if(sigismember(&pendset,SIGTERM))     
	{
		printf("yes,the SIGTERM is here\n");

		// 清空阻塞信号集
		sigemptyset(&action.sa_mask); 

		// 信号涵数处理为ignore(忽略)   
		action.sa_handler=SIG_IGN;  

		// 启动同signal功能类的信号涵数 
		sigaction(SIGTERM,&action,NULL);   
	}

	// 解除之前的信号阻塞
	sigprocmask(SIG_UNBLOCK,&set,NULL);    
	exit(EXIT_SUCCESS);
}
